package modelo.lugaresYPistas;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;


public class RastroCapital {

	private Pista pistaEconomicaFacil;
	private Pista pistaEconomicaMedia;
	private Pista pistaEconomicaDificil;
	
	private Pista pistaCulturalDificil;
	private Pista pistaCulturalMedia;
	private Pista pistaCulturalFacil;
	
	private Pista pistaHistoricaDificil;
	private Pista pistaHistoricaMedia;
	private Pista pistaHistoricaFacil;

	//Pistas economicas
	public void setPistaEconomicaFacil(Pista pista) {
		this.pistaEconomicaFacil = pista;
	}

	public Pista getPistaEconomicaFacil() {
		return this.pistaEconomicaFacil.copiar();
	}

	public void setPistaEconomicaMedia(Pista pista) {
		this.pistaEconomicaMedia = pista;
		
	}

	public Pista getPistaEconomicaMedia() {
		return this.pistaEconomicaMedia.copiar();
	}

	public void setPistaEconomicaDificil(Pista pista) {
		this.pistaEconomicaDificil = pista;
	}

	public Pista getPistaEconomicaDificil() {
		return this.pistaEconomicaDificil.copiar();
	}

	//Pistas historicas
	public void setPistaHistoricaFacil(Pista pista) {
		this.pistaHistoricaFacil = pista;
	}

	public Pista getPistaHistoricaFacil() {
		return this.pistaHistoricaFacil.copiar();
	}

	public void setPistaHistoricaMedia(Pista pista) {
		this.pistaHistoricaMedia = pista;
		
	}

	public Pista getPistaHistoricaMedia() {
		return this.pistaHistoricaMedia.copiar();
	}

	public void setPistaHistoricaDificil(Pista pista) {
		this.pistaHistoricaDificil = pista;
	}

	public Pista getPistaHistoricaDificil() {
		return this.pistaHistoricaDificil.copiar();
	}
	
	//Pistas culturales
	public void setPistaCulturalFacil(Pista pista) {
		this.pistaCulturalFacil = pista;
	}

	public Pista getPistaCulturalFacil() {
		return this.pistaCulturalFacil.copiar();
	}

	public void setPistaCulturalMedia(Pista pista) {
		this.pistaCulturalMedia = pista;
		
	}

	public Pista getPistaCulturalMedia() {
		return this.pistaCulturalMedia.copiar();
	}

	public void setPistaCulturalDificil(Pista pista) {
		this.pistaCulturalDificil = pista;
	}

	public Pista getPistaCulturalDificil() {
		return this.pistaCulturalDificil.copiar();
	}

	public void dejarRastroEnEstablecimiento(
			Establecimiento establecimiento) {
		establecimiento.obtenerPistaDeRastro(this);
	}

	public Node serializar(Document doc) {
		
		Element elementoPistas = doc.createElement("Pistas");
		Element elementoPistasCulturales = doc.createElement("PistasCulturales");
		Element elementoPistasHistoricas = doc.createElement("PistasHistoricas");
		Element elementoPistasEconomicas = doc.createElement("PistasEconomicas");
		
		elementoPistas.appendChild(elementoPistasEconomicas);
		elementoPistas.appendChild(elementoPistasHistoricas);
		elementoPistas.appendChild(elementoPistasCulturales);
		
		elementoPistasCulturales.appendChild(this.pistaCulturalFacil.serializar(doc));
		elementoPistasCulturales.appendChild(this.pistaCulturalMedia.serializar(doc));
		elementoPistasCulturales.appendChild(this.pistaCulturalDificil.serializar(doc));
		
		elementoPistasHistoricas.appendChild(this.pistaHistoricaFacil.serializar(doc));
		elementoPistasHistoricas.appendChild(this.pistaHistoricaMedia.serializar(doc));
		elementoPistasHistoricas.appendChild(this.pistaHistoricaDificil.serializar(doc));
		
		elementoPistasEconomicas.appendChild(this.pistaEconomicaFacil.serializar(doc));
		elementoPistasEconomicas.appendChild(this.pistaEconomicaMedia.serializar(doc));
		elementoPistasEconomicas.appendChild(this.pistaEconomicaDificil.serializar(doc));
		
		return elementoPistas;		
		
	}

	public static RastroCapital hidratar(Node rastroSerializado) {
		
		RastroCapital rastro = new RastroCapital();
		
		rastro.setPistaEconomicaFacil(Pista.hidratar(rastroSerializado.getChildNodes().item(0).getChildNodes().item(0)));
		rastro.setPistaEconomicaMedia(Pista.hidratar(rastroSerializado.getChildNodes().item(0).getChildNodes().item(1)));
		rastro.setPistaEconomicaDificil(Pista.hidratar(rastroSerializado.getChildNodes().item(0).getChildNodes().item(2)));
		
		rastro.setPistaHistoricaFacil(Pista.hidratar(rastroSerializado.getChildNodes().item(1).getChildNodes().item(0)));
		rastro.setPistaHistoricaMedia(Pista.hidratar(rastroSerializado.getChildNodes().item(1).getChildNodes().item(1)));
		rastro.setPistaHistoricaDificil(Pista.hidratar(rastroSerializado.getChildNodes().item(1).getChildNodes().item(2)));
		
		rastro.setPistaCulturalFacil(Pista.hidratar(rastroSerializado.getChildNodes().item(2).getChildNodes().item(0)));
		rastro.setPistaCulturalMedia(Pista.hidratar(rastroSerializado.getChildNodes().item(2).getChildNodes().item(1)));
		rastro.setPistaCulturalDificil(Pista.hidratar(rastroSerializado.getChildNodes().item(2).getChildNodes().item(2)));
		
		
		return rastro;
	}
}
